﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//数据类型
//int main()
//{
//	printf("%d\n", sizeof(char));//sizeof（）操作符是计算长度的，单位是字节（byte）。例如计算char的长度
//	printf("%d\n", sizeof(short));//short 短整型
//	printf("%d\n", sizeof(int));//int 整型
//	printf("%d\n", sizeof(long));//long 长整型
//	printf("%d\n", sizeof(long long));
//	printf("%d\n", sizeof(float));//float 浮点型
//	printf("%d\n", sizeof(double));//double 双精度浮点型
//	printf("%d\n", sizeof(_Bool));//_BOOL 布尔类型
//	return 0;
//}

//sizeof()不会计算里面的表达式
//int main()
//{
//	short s = 2;
//	int b = 10;
//	printf("%zd\n", sizeof(s = b + 1));//b+1是两个int类型相加还是int类型，s是short类型，int放到shaort里会发生截断，所以结果是short类型的长度2，
//	printf("s = %d\n", s);
//	return 0;
//}


//sizeof()计算结果是size_t类型
//int main()
//{
//	size_t n = sizeof(int);
//	printf("%zd\n", n);
//	return 0;
//}


//int b = 200;//全局变量（大括号外面）。全局变量的使⽤范围更⼴，整个⼯程中想使⽤，都是有办法使⽤的。
//int main()
//{
//	printf("%d\n", b);
//	int a = 10;//局部变量（大括号里面）。局部变量的使⽤范围是⽐较局限，只能在⾃⼰所在的局部范围内使⽤的。
//	{
//		printf("%d\n", b);
//		int c = 20;//局部变量
//	}
//}全局和局部名字相同时，局部优先，


//操作符  + - * / %
//int main()
//{
//	printf("%d\n", 1 + 2);
//	printf("%d\n", 15 / 2);      //除号两端是整数时，结果为小数时取整数部分
//	printf("%.2lf\n", 15.0 / 2);//除号两端至少一个为浮点数时结果为小数
//	                           //%f  %lf小数点后默认6位小数，  %.3f %.3lf 小数点后保留3位
//	return 0;
//}


//int main() //% 表⽰求模运算，即返回两个整数相除的余值。这个运算符只能⽤于整数，不能⽤于浮点数。
//{
//	int a = 7 % 2;
//	printf("%d\n", a);
//	printf("%d\n", -11 % 2);//负数求模，结果的正负号由第⼀个运算数的正负号决定。
//	return 0;
//}

//单目操作符
//int main()
//{
//	int a = 4;
//	int b = ++a; //前置++，先 + 1，再将值赋给b。a=a+1 -> b=a
//	int c = a++;//后置++，先使用，在+1。b=a -> a=a+1
//	printf("a=%d,b=%d,c=%d\n", a,b,c);
//	return 0;
//}


//强制类型转换
//int main()
//{
//	//3.14   double
//	//3.14f  float
//	int a = (int)3.14;//将3.14强制转换为int类型,强制类型转换只取整数部分
//	printf("%d\n", a);
//	return 0;
//}


//printf介绍
//int main()
//{
//	printf("hehe\n");//printf() 的作⽤是将参数⽂本输出到屏幕
//	printf("There are % d apples\n", 3);//printf() 可以在输出⽂本中指定占位符。%d是占位符，可以被替换
//	                                   //占位符的第⼀个字符⼀律为百分号 % 
//	printf("%s say it is %d o'clock\n", "zhangsan", 5);//输出⽂本⾥⾯可以使⽤多个占位符
//	printf("%5d\n", 123);//限定宽度:。例 %5d就是打印5位  默认是右对⻬
//	printf("%-5d\n", 123);//左对齐，在数字前加—
//
//	printf("%12f\n", 123.45);//对于⼩数，这个限定符会限制所有数字的最⼩显⽰宽度。
//	                        //⼩数的默认显⽰精度是⼩数点后6位，
//	return 0;
//}

//限定小数位数
//int main()
//{
//	printf("%.2f\n", 123.456);//⼩数点后⾯只保留两位，占位符可以写成 % .2f 。
//	printf("%6.2f\n", 0.5);  //6.2f表示输出字符串最⼩宽度为6且小数点后保留2位
//
//	printf("%*.*f\n", 6, 2, 0.5);//最⼩宽度和⼩数位数这两个限定值，都可以⽤ * 代替
//	return 0;
//}

//输出部分字符串
//int main()
//{
//	printf("hello world\n");
//	printf("%.3s\n", "hello world\n");//⽤ %.[m]s 指定输出的⻓度
//	return 0;
//}


//scanf介绍
//int main()
//{
	//int score = 0;
	//printf("请输入成绩：");
	//scanf("%d", &score);//&取地址
	//printf("成绩是%d\n", score);
	// 
	//scanf("%c%c%d%f",&a,&b,&c,&d);//格式字符串⾥⾯有多少个占位符，就有多少个变量。
	
	//scanf返回值：
	//1,scanf() 的返回值是⼀个整数，表⽰成功读取的变量个数。
	//2,如果没有读取任何项，或者匹配失败，则返回 0 。
	//3, 如果在成功读取任何数据之前，发⽣了读取错误或者遇到读取到⽂件结尾，则返回常量 EOF。
	//return 0;
//}


////占位符%c
/*int main()
{
	char a = 0;
	char b = 0;
	char c = 0;
	scanf("%c%c%c", &a, &b, &c);
	printf("%c %c %c", a, b, c);//%c 不忽略空⽩字符，总是返回当前第⼀个字符，⽆论该字符是否为空格
	scanf(" %c%c%c", &a, &b, &c);//%c 前加上⼀个空格，表⽰跳过零个或多个空⽩字符。
	return 0;
}*/

//占位符%s
/*int main()
{
	char arr[20] = { 0 };
	char name[11];
	scanf("%10s", name);//%10s,只读10个字符
	scanf("%s", arr);//从当前第⼀个⾮空⽩字符开始读起，直到遇到空⽩字符（即空格、换⾏符、制表符等）为⽌。
	printf("%s\n", arr);
	return 0;
}*/
 
//赋值忽略符(有时，⽤⼾的输⼊可能不符合预定的格式)
int main()
{
	int year = 0;
	int month = 0;
	int day = 0;
	scanf("%d%*c%d%*c%d", &year, &month, &day);//只要把 * 加在任何占位符的百分号后⾯，该占位符就不会返回值(即忽略掉这个占位符)
	printf("%d-%d-%d", year, month, day);
	return 0;
}
